home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib15.dsk
/
SLOT FINDER.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
2KB
|
47 lines
10 REM **********************
11 REM * SLOT FINDER *
12 REM * BY STEVEN WEYHRICH *
13 REM * COPYRIGHT (C) 1983 *
14 REM * BY MICROSPARC, INC *
15 REM * LINCOLN, MA. 01773 *
16 REM **********************
30 REM ADAPTED FROM PROGRAM "CONFIG" IN CONTACT #6, APPLE USER'S GROUP NEWSLETTER OF OCTOBER 1979
40 REM IDENTIFIES SLOTS BY WHICH CARDS ARE PLUGGED INTO THEM
50 C000 = 49152:C100 = 49408:C700 = 50944: REM MEMORY ADDRESSES
60 N = 7: REM NUMBER OF CARDS DEFINED
70 R1 = 10:R2 = 15: REM RELATIVE BYTE IN EACH SLOT
80 DIM B1(N),B2(N),NAME$(N),CS(2),SLOT(7)
90 B1(1) = 138:B2(1) = 120:NAME$(1) = "SILENTYPE PRINTER CARD"
100 B1(2) = 120:B2(2) = 072:NAME$(2) = "SERIAL PRINTER CARD"
110 B1(3) = 036:B2(3) = 060:NAME$(3) = "DISK CONTROLLER CARD"
120 B1(4) = 038:B2(4) = 072:NAME$(4) = "COMMUNICATIONS CARD"
130 B1(5) = 255:B2(5) = 007:NAME$(5) = "HAYES MICROMODEM II"
140 B1(6) = 038:B2(6) = 197:NAME$(6) = "EMULATION SERIAL CARD"
141 B1(7) = 021:B2(7) = 244:NAME$(7) = "APPLE MOUSE CARD"
150 GOSUB 240: REM CHECK THE SLOTS
160 REM REPORT ON RESULTS OF SEARCH
170 FOR I = 1 TO 7
180 PRINT "SLOT "I;
190 IF SLOT(I) = 0 THEN PRINT " IS EMPTY"
200 IF SLOT(I) >0 THEN PRINT " HAS A "NAME$(SLOT(I))
210 PRINT : NEXT I
220 END
230 REM ********************** SLOT FINDER SUBROUTINE **********************
240 FOR I = 1 TO 7:SLOT(I) = 0: NEXT I
250 FOR S = C100 TO C700 STEP 256
260 SLOT = (S -C000)/256: REM IDENTIFY THE SLOT #
270 REM MAKE 3 PASSES OVER SLOT MEMORY
280 FOR K = 0 TO 2:CS(K) = 0
290 FOR I = 0 TO 255 STEP 64
300 CS(K) = CS(K) + PEEK(S +I)
310 NEXT I: NEXT K
320 REM NOW CHECK IF SUM FROM EACH PASS
330 REM IS THE SAME; IF NOT, OR IF ALL
340 REM BYTES ARE $FF, THEN SLOT IS EMPTY
350 IF CS(0) < >CS(1) OR CS(0) < >CS(2) OR CS(1) < >CS(2) OR CS(0) = 1020 OR CS(1) = 1020 OR CS(2) = 1020 THEN 400: REM EMPTY SLOT
360 REM IDENTIFY THE CARD
370 FOR I = 1 TO N
380 IF PEEK(S +R1) = B1(I) AND PEEK(S +R2) = B2(I) THEN SLOT(SLOT) = I:I = N: REM A MATCH; TERMINATE LOOP
390 NEXT I
400 NEXT S: REM CHECK THE NEXT SLOT
410 RETURN